window.___lhp_run_func_lhp_loop_time_func=function(str_,obj=null){
  try{
    console.log("str_:",str_)
      if (str_==''){return null;}
      else if (str_.includes('.')){
          let arr = str_.split('.');  
          let run_func=window
          for (let i=0;i<arr.length-1;i++){ run_func=run_func[arr[i]]}
          if (obj!=null){
              let res=run_func[arr[arr.length-1]](obj)
              console.log("run_func",run_func)
              console.log("arr.length-1",arr.length-1)
              console.log("arr",arr)
              console.log("obj",obj)
              console.log(str_,"得到返回值1:",res)
              return res
          }else{
            let res=run_func[arr[arr.length-1]]()
            console.log(str_,"得到返回值2:",res)
            return res
          }
      }else{
          if (obj!=null){
            let res=window[str_](obj)
            console.log(str_,"得到返回值3:",res)
            return res
          }else{
            let res=window[str_]()
            console.log(str_,"得到返回值4:",res)
            return res
          }
      }
      
}catch{}
}
window.___lhp_run_func_lhp_loop_time_func_check=function(str_){
  // console.log("检查函数"+str_+"是否存在:",str_)
  if (str_==''){return true;}
  else if (str_.includes('.')){
      let arr = str_.split('.');  
      let run_func=window
      try{for (let i=0;i<arr.length;i++){ run_func=run_func[arr[i]]}}
      catch{
        // console.log("不存在")
        return false
      }


      if (run_func!=undefined && run_func!=null){
        console.log("存在")
          return true
      }else{
        // console.log("不存在")
          return false
      }
}
}



window.lhp_loop_time=1000;
window.lhp_loop_time_funcs=[];
window.lhp_loop_time_obj=null;
window.lhp_loop_time_func=function(){
  clearTimeout(lhp_loop_time_obj);//清除定时器
  for (let i=0;i<lhp_loop_time_funcs.length;i++){
    let item=lhp_loop_time_funcs[i];
    //匹配循环的时间:
    if (item.now_time==null || item.now_time==undefined){item.now_time=1;}else{item.now_time++;}
    if (item.now_time>=item.time){
      item.now_time=0;
      let res=null;
      if (typeof item.func === 'string') {  
      //调用字符串函数
      console.log("___lhp_run_func_lhp_loop_time_func_check(item.func)",item,___lhp_run_func_lhp_loop_time_func_check(item.func))
      if(___lhp_run_func_lhp_loop_time_func_check(item.func)){
        if (item.params!=undefined){try{res=___lhp_run_func_lhp_loop_time_func(item.func,item.params)}catch{}
        }else{try{res=___lhp_run_func_lhp_loop_time_func(item.func)}catch{}}
      }else{continue}
        
      }else{
        //调用普通函数
        if (item.params!=undefined){try{res=item.func(item.params)}catch{}
        }else{try{res=item.func()}catch{}}
      }
      


      if (item.callback!=undefined){if(res!=undefined){try{item.callback(res)}catch{}}else{try{item.callback()}catch{}}}
      if (item.once==true){console.log("删除！",item);
window.lhp_loop_time_funcs.splice(i,1);i--;}
    }
  //如果有最大计数值 则删除
  if(item.count===undefined){item.count=0}else{item.count++;}
  if((!(item.count_max===undefined))&&(item.count>item.count_max)){window.lhp_loop_time_funcs.splice(i,1);i--;}
  }
  lhp_loop_time_obj = setTimeout(lhp_loop_time_func, lhp_loop_time); //设定定时器，循环运行
}
lhp_loop_time_obj = setTimeout(lhp_loop_time_func, 100); //开始运行
//只运行一次
//obj:{
//"info":"基本信息",
//"func":要运行的函数, //如果为字符串 则会判断是否存在 如果存在此函数 才会运行 如果超过20秒 此函数依旧不存在会打印信息到终端
//
//"params":"传参","time":1[代表100毫秒运行一次],"once":true[代表运行一次就删除无论是否报错]
//      "callback":回调函数【如果运行func后返回值不为undefined会传入func的返回值作为回调函数的参数】
//}
window.lhp_start_loop_once=function(obj){
  obj.once=true;
  if(obj.time==undefined || obj.time==null){obj.time=1;}
  window.lhp_loop_time_funcs.push(obj)
}
window.lhp_start_loop=function(obj){if(obj.time==undefined || obj.time==null){obj.time=1;}
window.lhp_loop_time_funcs.push(obj);}





// let test_obj={
// func:'测试.打印222',
// "params":{"参数":"打印222回调完成"},
// callback:function(params){console.log("回调参数:",params)}}
// lhp_start_loop_once(test_obj);

// let test_obj2={
//   time:10,//1秒后运行
//   func:function(){console.log("设置测试.打印222函数完成");lhp_deepcopy1(window,{"测试":{"打印222":function(params){console.log("测试打印:222");return params}}})},}
// lhp_start_loop(test_obj2);
